package br.com.aspas.modelo;

import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name = "caixa")
public class Caixa extends Auditavel {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer codigo;
    @Column
    private Double total;
    @Column(length = 30)
    private String status;
    @Column(length = 30)
    private String formaPagamento;
    @Column
    private Double valorRecebido;
    @Column
    private Double valorTroco;
    @Column
    private Integer quantidade;
    @Column(name = "tipo_pessoa")
    private Integer tipoPessoa;
    @Column(length = 50)
    private String nome;
    @Column(name = "cpf_cnpj", length = 20)
    private String cpfcnpj;
    @Temporal(TemporalType.DATE)
    @Column(name = "data_Caixa")
    private Date dataCaixa;
    @ManyToOne
    @JoinColumn(name = "tipo_inscricao_codigo")
    private TipoInscricao tipoInscricao;
    @ManyToOne
    @JoinColumn(name = "atividade_inscricao_codigo")
    private AtividadeInscricao atividadeInscricao;
    @ManyToOne
    @JoinColumn(name = "evento",insertable=true ,updatable=false)
    private Evento evento;
    @Lob
    private String descricao;
    @OneToMany(mappedBy="caixa" ,fetch=FetchType.EAGER)
    private List<Recebimentos> recebimentos;
    @Column(name="disponivel")
    private Integer disponivel;

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public List<Recebimentos> getRecebimentos() {
        return recebimentos;
    }

    public void setRecebimentos(List<Recebimentos> recebimentos) {
        this.recebimentos = recebimentos;
    }

    public Integer getCodigo() {
        return codigo;
    }

    public void setCodigo(Integer codigo) {
        this.codigo = codigo;
    }

    public Double getTotal() {
        return total;
    }

    public void setTotal(Double total) {
        this.total = total;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getFormaPagamento() {
        return formaPagamento;
    }

    public void setFormaPagamento(String formaPagamento) {
        this.formaPagamento = formaPagamento;
    }

    public Double getValorRecebido() {
        return valorRecebido;
    }

    public void setValorRecebido(Double valorRecebido) {
        this.valorRecebido = valorRecebido;
    }

    public Double getValorTroco() {
        return valorTroco;
    }

    public void setValorTroco(Double valorTroco) {
        this.valorTroco = valorTroco;
    }

    public Integer getQuantidade() {
        return quantidade;
    }

    public void setQuantidade(Integer quantidade) {
        this.quantidade = quantidade;
    }

    public String getCpfcnpj() {
        return cpfcnpj;
    }

    public void setCpfcnpj(String cpfcnpj) {
        this.cpfcnpj = cpfcnpj;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public Integer getTipoPessoa() {
        return tipoPessoa;
    }

    public void setTipoPessoa(Integer tipoPessoa) {
        this.tipoPessoa = tipoPessoa;
    }

    public TipoInscricao getTipoInscricao() {
        return tipoInscricao;
    }

    public void setTipoInscricao(TipoInscricao tipoInscricao) {
        this.tipoInscricao = tipoInscricao;
    }

    public AtividadeInscricao getAtividadeInscricao() {
        return atividadeInscricao;
    }

    public void setAtividadeInscricao(AtividadeInscricao atividadeInscricao) {
        this.atividadeInscricao = atividadeInscricao;
    }

    public Date getDataCaixa() {
        return dataCaixa;
    }

    public void setDataCaixa(Date dataCaixa) {
        this.dataCaixa = dataCaixa;
    }

    public Evento getEvento() {
        return evento;
    }

    public void setEvento(Evento evento) {
        this.evento = evento;
    }

    public Integer getDisponivel() {
        return disponivel;
    }

    public void setDisponivel(Integer disponivel) {
        this.disponivel = disponivel;
    }


}
